#include "command.h"

void handler_mkdir(char *cur_path, data *msg, int socket_fd){

    char file_name[1024] = {0};
    strcpy(file_name, msg->args);
    if (msg->args[0] == '\0') { // 检查 args 是否为空
        // 若args为空即只输入mkdir命令
        printf("命令不合法, 请重新输入 \n");
        return;
    }
    if(msg->args[0] == '/'){
        // mkdir + 从根目录开始的客户端绝对路径
        // args以 "/" 开头不进行更改
        printf("绝对路径创建文件夹暂未实现, 请重新输入\n");
        return;
    }
    else{
        // 此时余下的情况为输入命令 "mkdir
        // 目前只考虑属于一个文件夹情况，递归创建不考虑
        // 同时输入 以当前路径下文件夹开头的路径（不考虑）
        char path[3072] = {0};
        char cur_path_tmp[2048] = {0};
        strcpy(cur_path_tmp, cur_path);
        strncat(path, cur_path_tmp, sizeof(path) - strlen(path) - 1);
        strcpy(msg->args, path);
    }

    // 将 data 结构体发送到 socket
    ssize_t sent_1 = send(socket_fd, msg, sizeof(data), 0);
    if (sent_1 < 0) {
        perror("send failed in handler_send_ls");
    }

    // 将文件名发送到 socket
    ssize_t sent_2 = send(socket_fd, file_name, sizeof(file_name), 0);
    if (sent_2 < 0) {
        perror("send failed in handler_send_ls");
    }
    
    // 接收查询结果
    int ret = 0;
    ssize_t received = recv(socket_fd, &ret, sizeof(int), MSG_WAITALL);
    if(ret == 1){
        printf("该文件夹存在 \n");
    }
}